home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 16 / IOPROG_16.ISO / soft / macaxsdk / macsdk.hqx / ActiveX DR3 SDK / ActiveX SDK / Container Common / AXInitialize.cpp / AXInitialize.cpp
Encoding:
Text File  |  1997-04-30  |  2.1 KB  |  93 lines  |  [TEXT/CWIE]

  1. //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. //
  3. //    AXInitialize.c
  4. //
  5. // >>> ⌐ 1996-1997 Microsoft Corporation.  All rights reserved. <<<
  6. //
  7. //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  8.  
  9. #include "AXContainerHeaders.h"
  10.  
  11. #include <Threads.h>
  12. #include <ActiveXThreads.h>
  13. #include "CMacThreadManager.h"
  14. #include "urlapi.h"
  15.  
  16. #include "AXInitialize.h"
  17.  
  18. IMacThreadManager*    gMacThreadManager = NULL;
  19.  
  20. static Boolean8        ComInitialized = false;
  21. static Boolean8        UrlMonInitialized = false;
  22.  
  23. //------------------------------------------------------------------------------------
  24. // InitActiveX
  25. //------------------------------------------------------------------------------------
  26. //
  27. AXErrorCode InitActiveX(void)
  28. {
  29.     AXErrorCode    theResult = NOERROR;
  30.     
  31.     // if we're already initialized, just return
  32.     if ( !ComInitialized )
  33.     {
  34.         // Make sure COM is around
  35.         if ( CoInitialize == (long) kUnresolvedCFragSymbolAddress )
  36.             theResult = E_UNEXPECTED;
  37.         else
  38.         {
  39.             // if we can get COM initialized, proceed    
  40.             if ( CoInitialize(NULL) == NOERROR )
  41.             {
  42.                 ComInitialized = true;
  43.  
  44.                 gMacThreadManager = (IMacThreadManager*) new CMacThreadManager();
  45.                 
  46.                 if ( gMacThreadManager )
  47.                 {
  48.                     if ( OpenUrlMoniker == (long) kUnresolvedCFragSymbolAddress )
  49.                         theResult = E_UNEXPECTED;
  50.                     else
  51.                     {
  52.                         if ( OpenUrlMoniker(gMacThreadManager) != noErr )
  53.                             theResult = E_FAIL;
  54.                         else
  55.                             UrlMonInitialized = true;
  56.                     }
  57.                 }
  58.                 else
  59.                     theResult = E_OUTOFMEMORY;
  60.             }
  61.             else
  62.                 theResult = E_FAIL;
  63.         }
  64.     }
  65.     
  66.     return theResult;
  67. }
  68.  
  69.  
  70. //------------------------------------------------------------------------------------
  71. // ExitActiveX
  72. //------------------------------------------------------------------------------------
  73. //
  74. void ExitActiveX(void)
  75. {
  76.     if ( UrlMonInitialized )
  77.     {
  78.         CloseUrlMoniker();
  79.         UrlMonInitialized = false;
  80.     }
  81.     
  82.     if ( gMacThreadManager )
  83.     {
  84.         gMacThreadManager->Release();
  85.         gMacThreadManager = NULL;
  86.     }
  87.  
  88.     if ( ComInitialized )    
  89.     {
  90.         CoUninitialize();
  91.         ComInitialized = false;
  92.     }
  93. }